using System;
using System.Collections.Generic;

namespace JGSY.CMS.LowCode.Platform.Application.DTOs
{
    /// <summary>
    /// 风险评估上下文数据传输对象
    /// 用于传输进行安全风险评估时的环境和用户信息
    /// </summary>
    public class RiskAssessmentContextDto
    {
        /// <summary>
        /// 用户标识符
        /// 进行风险评估的用户ID
        /// </summary>
        public long UserId { get; set; }
        
        /// <summary>
        /// 设备指纹
        /// 用于识别用户设备的唯一标识字符串
        /// </summary>
        public string DeviceFingerprint { get; set; } = string.Empty;
        
        /// <summary>
        /// IP地址
        /// 用户访问时的网络IP地址
        /// </summary>
        public string IpAddress { get; set; } = string.Empty;
        
        /// <summary>
        /// 地理位置信息
        /// 用户访问时的地理位置数据（可选）
        /// </summary>
        public LocationDto? Location { get; set; }
        
        /// <summary>
        /// 用户代理信息
        /// 浏览器或客户端的标识信息
        /// </summary>
        public string UserAgent { get; set; } = string.Empty;
        
        /// <summary>
        /// 时间戳
        /// 风险评估执行的时间
        /// </summary>
        public DateTime Timestamp { get; set; }
    }

    /// <summary>
    /// 位置信息数据传输对象
    /// 用于传输地理位置的坐标和地址信息
    /// </summary>
    public class LocationDto
    {
        /// <summary>
        /// 纬度
        /// 地理位置的纬度坐标
        /// </summary>
        public double Latitude { get; set; }
        
        /// <summary>
        /// 经度
        /// 地理位置的经度坐标
        /// </summary>
        public double Longitude { get; set; }
        
        /// <summary>
        /// 国家
        /// 地理位置所在的国家名称
        /// </summary>
        public string? Country { get; set; }
        
        /// <summary>
        /// 城市
        /// 地理位置所在的城市名称
        /// </summary>
        public string? City { get; set; }
    }
}
